<template>
 <v-container>
   <h1>一对一关联</h1>
 </v-container>
  <v-container>
    <v-row>
      <v-col cols="36">
        <h2>写法</h2>
      </v-col>
    </v-row>
    <v-row>
      <v-col cols="36">
        <p>查到一个entity 的数据，同时也会查到其对象的关联对象。</p>
        <p>这一功能不是通过 join 查询完成的，而是二次查询完成的</p>
      </v-col>
    </v-row>
    <v-row>
      <v-col>
        <h3>涉及的实体类</h3>
      </v-col>
    </v-row>
    <v-row>
      <v-col>
        <p>com.zoro.dyformservice.business.user.entity.UserInfoEntity</p>
        <p>com.zoro.dyformservice.business.user.entity.UserInfoExtEntity</p>
      </v-col>
    </v-row>
    <v-row>
      <v-col>
        <h3>需要用到的注解</h3>
      </v-col>
    </v-row>
    <v-row>
      <v-col>
        <p>jakarta.persistence.OneToOne</p>
        <p>jakarta.persistence.JoinColumn</p>
        <p>jakarta.persistence.JoinColumns</p>
      </v-col>
    </v-row>
    <v-row>
      <v-col>
        <h3>参考</h3>
      </v-col>
    </v-row>
    <v-row>
      <v-col>
        <p><strong>note</strong></p>
        <p>java常识\hibernate\hibernate-one-to-one.md</p>
        <p>
          hibernate中的关联对象对应的是数据库中的一对一，但还是将两个表对应的实例分开来看的，对是先有一个对象，再通过关联条件找到别一个对象
        </p>
      </v-col>
    </v-row>
    <v-row>
      <v-col>
        <h3>注意</h3>
      </v-col>
    </v-row>
    <v-row>
      <v-col>
        <v-list lines="two" density="compact">
          <v-list-item
            title="注意关联列在哪个表中"
            subtitle="关联列在哪个表中， 对应的关联注解就应该写在这个表对应的实例中， 如果需要双向关联，就在对应的关联实体中使用 关联注解的 mappingBy 属性"
          >
            <template v-slot:prepend>
              <v-icon icon="fa-solid fa-circle-exclamation"></v-icon>
            </template>
          </v-list-item>
          <v-list-item
            title="懒加载"
            subtitle="要使用hibernate 的懒加载，必需有一个独立的关联列来保存关联关系。hibernate 通过这个例数据是否为null 来决定是否懒加载关联对象"
          >
            <template v-slot:prepend>
              <v-icon icon="fa-solid fa-circle-exclamation"></v-icon>
            </template>
          </v-list-item>
          <v-list-item
            title="双向关联对象"
            subtitle="双向关联的两个对象会互相持有， 会导致一些json 序列化方法无限循环， 如果两个对象的toString 方法都用到了关联对象，也会无限循环"
          >
            <template v-slot:prepend>
              <v-icon icon="fa-solid fa-circle-exclamation"></v-icon>
            </template>
          </v-list-item>
        </v-list>
      </v-col>
    </v-row>
  </v-container>
</template>
<script setup lang="ts">
</script>
<style scoped></style>
